package com.linchong.concurrency.singleton;

import com.linchong.concurrency.annoations.ThreadSafe;

/**
 * @author linchong
 * @version 1.0
 * @Date: 2020-12-08 17:26
 * @Description: SingletonExample1$饿汉模式
 * 单例的实例在类装载时进行创建
 * 如果构造函数中包含过多操作处理，饿汉模式会导致该类加载的时候特别的慢，可能会引起性能问题，
 * 如果使用饿汉模式，只进行类的加载而没有使用的话，会造成资源浪费。
 *
 * 使用场景：
 *  私有构造函数实现时没有太多的处理
 *  该类实际过程中肯定会被使用，不会造成资源浪费
 */
@ThreadSafe
public class SingletonExample6 {
	/**
	 * 私有化构造
	 */
	private SingletonExample6(){

	}

	//单例对象
	private static SingletonExample6 instance = null;

	static {
		instance = new SingletonExample6();
	}

	/**
	 * 静态工厂方法获取单例对象
	 * @return
	 */
	public static SingletonExample6 getInstance(){
		return instance;
	}

	public static void main(String[] args) {
		System.out.println(getInstance().hashCode());
		System.out.println(getInstance().hashCode());
	}
}
